<?php

namespace Medicina\BackendBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class AlertaController extends Controller {

    public function indexAction() {

        $paginador = $this->get('ideup.simple_paginator');
        $paginador->setItemsPerPage(5);
        $em = $this->getDoctrine()->getEntityManager();

        $qb = $em->createQueryBuilder()
                ->select('DISTINCT (c.codigo)', 'cat.nombre AS nombre_catedra', 'tdc.nombre AS nombre_tipodecargo', 'poc.fechaInicio', 'poc.fechaFin', 'poc.renueva', 'p.nombre AS nombre_persona', 'p.apellido', 'p.dni', 'p.id AS id_persona', 'con.id as concurso_id', 'con.numeroExpediente')
                ->from('\Medicina\KernelBundle\Entity\PersonaOcupaCargo', 'poc')
                ->innerJoin('poc.cargo', 'c')
                ->innerJoin('c.tipoDeCargo', 'tdc')
                ->innerJoin('c.catedra', 'cat')
                ->innerJoin('poc.persona', 'p')
                ->leftJoin('c.concursos', 'con')
                ->where('poc.fechaFin >= CURRENT_TIMESTAMP()')
                ->andWhere('DATE_DIFF(poc.fechaFin,CURRENT_TIMESTAMP())<=30')
                ->andWhere('con.cerrado <> 1')
                ->andWhere('(SELECT count(c1.codigo) FROM \Medicina\KernelBundle\Entity\Cargo c1 INNER JOIN c1.concursos con2 WHERE con2.cerrado <> 1 AND c.codigo = c1.codigo) <= 1')
                ->orderBy('c.codigo', 'ASC')
                ->orderBy('cat.nombre', 'ASC')
                ->getQuery();
//        $qb = $em->createQuery('
//                SELECT DISTINCT c.codigo
//                , ca.nombre AS nombre_catedra
//                , tc.nombre AS tipo_cargo
//                , poc.fechaInicio 
//                , poc.fechaFin
//                , poc.renueva 
//                , p.nombre
//                , p.apellido
//                , p.dni 
//                , p.id AS persona_id
//                FROM \Medicina\KernelBundle\Entity\PersonaOcupaCargo as poc
//                    INNER JOIN Cargo as c ON poc.cargo_id = c.id
//                    INNER JOIN TipoDeCargo as tc ON c.tipo_de_cargo_id = tc.id
//                    INNER JOIN Catedra as ca ON c.catedra_id = ca.id
//                    INNER JOIN Persona as p ON poc.persona_id = p.id
//                WHERE DATEDIFF( poc.fechaFin, CURRENT_TIMESTAMP() ) <= 30
//                AND c.id NOT IN (
//                        SELECT pc.cargo_id
//                        FROM \Medicina\KernelBundle\Entity\PersonaOcupaCargo pc
//                        WHERE DATEDIFF( pc.fechaFin, CURRENT_TIMESTAMP() ) > 30)
//                ORDER BY ca.nombre ASC 
//        ');
//        $qb = $em->createQueryBuilder()
//                ->select('DISTINCT (c.codigo)'
//                        , 'cat.nombre AS nombre_catedra'
//                        , 'tdc.nombre AS nombre_tipodecargo'
//                        , 'poc.fechaInicio'
//                        , 'poc.fechaFin'
//                        , 'poc.renueva'
//                        , 'p.nombre AS nombre_persona'
//                        , 'p.apellido'
//                        , 'p.dni'
//                        , 'p.id AS id_persona')
//                ->from('\Medicina\KernelBundle\Entity\PersonaOcupaCargo', 'poc')
//                ->innerJoin('poc.cargo', 'c')
//                ->innerJoin('c.tipoDeCargo', 'tdc')
//                ->innerJoin('c.catedra', 'cat')
//                ->innerJoin('poc.persona', 'p')
//                ->where('(DATE_DIFF(poc.fechaFin, CURRENT_TIMESTAMP())) <= 30')
//                ->andWhere('c.id NOT IN (
//                                SELECT pc.cargo_id
//                                FROM \Medicina\KernelBundle\Entity\PersonaOcupaCargo pc
//                                    JOIN pc.cargo c1
//                                WHERE (DATE_DIFF(pc.fechaFin, CURRENT_TIMESTAMP())) > 30
//                                )
//                ')
//                ->orderBy('c.codigo', 'ASC')
//                ->orderBy('cat.nombre', 'ASC')
//                ->getQuery();
        $qb2 = $em->createQueryBuilder()
                ->select('con.id as concurso_id', 'con.fechaEvaluacion as fecha_eval', 'con.fechaEntregaActa as fecha_acta', 'con.numeroExpediente')
                ->from('\Medicina\KernelBundle\Entity\Concurso', 'con')
                ->where('con.fechaEntregaActa >= CURRENT_TIMESTAMP()')
                ->andWhere('DATE_DIFF(con.fechaEntregaActa,CURRENT_TIMESTAMP())<=10')
                ->andWhere('con.cerrado <> 1')
                ->orderBy('con.fechaEntregaActa', 'ASC') 
               // ->orderBy('con.numeroExpediente', 'ASC')
                ->getQuery();
        
        $alertas = $qb->getResult();
        $alertas = $paginador->paginate($alertas)->getResult();
        
        $alertasActa = $qb2->getResult();
        $alertasActa = $paginador->paginate($alertasActa)->getResult();

        return $this->render('BackendBundle:Alerta:index.html.twig', array(
                    'alertas' => $alertas,  
                    'alertasActa' => $alertasActa,
                    'paginador' => $paginador
                ));
    }

}